<?php

/***********************************************/
/*TITULO */
/***********************************************/
echo" <div class=\"pag_content\">
 	<div class=\"pag_content_title\">
		<div class=\"pag_title_cap\">Cap&iacute;tulo 6: </div>
		<div class=\"pag_title_cont\">	Administraci&oacute;n de Usuarios</div>
    </div>
    <div class=\"pag_content_body\">         
	<div class=\"contenido_principal\">	
		<br />";
/***********************************************/
/*TITULO PARRAFO */
/***********************************************/
echo "
	<div class=\"parrafo_titulo\">
	Gestionar recursos
	</div>";

/***********************************************/
/*CONTENIDO*/
/***********************************************/
echo "
<div class=\"parrafo\" align=\"justify\">
En una sesion podemos controlar algunos parametros de utilizacion de los recursos de la base de datos, tales como la CPU, memoria, procesos de lectura y escritura, etc.
<br />
Antes de configurar la gestion de recursos de nuestra base de datos, tenemos que configurar un parametro de inicio:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>sql&gt; ALTER SYSTEM SET resource_limit = TRUE SCOPE = BOTH;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para poder configurar los recursos de sesi&oacute;n utilizaremos las sentencias CREATE PROFILE y ALTER PROFILE.
<br />
Una vez hecho esto los parametros que vamos a poder modificar son:
<br /><br />
- CONNECT_TIME: El numero maximo de minutos que va a durar dicha sesion, una vez sobrepasado ese tiempo, se hara un rollback de las transacciones sin terminar y se cerrara la conexion:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE agent LIMIT CONNECT_TIME 10;

sql&gt;ALTER PROFILE data_analyst LIMIT CONNECT_TIME UNLIMITED;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
- CPU_PER_CALL: Medido en centesimas de segundo, limita la cantidad de tiempo de cpu que puede consumir una peticion dentro de una sesion.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE agent LIMIT CPU_PER_CALL 3000;

sql&gt;ALTER PROFILE data_analyst LIMIT CPU_PER_CALL UNLIMITED;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
- CPU_PER_SESSION: Medido en centesimas de segundos, limita la cantidad de tiempo de cpu que puede consumir la sesi&oacute;n.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE agent LIMIT CPU_PER_CALL 30000;

sql&gt;ALTER PROFILE data_analyst LIMIT CPU_PER_CALL UNLIMITED;

</p></pre></blockquote>

<div class=\"parrafo\" align=\"justify\">
- IDLE_TIME: Para evitar que existan conexiones en estado inactivo durante mucho tiempo podemos configurar este parametro. Una vez alcanzado este tiempo Oracle permite al usuario hacer un commit o un rollback de la transaccion que no haya acabado.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE agent LIMIT IDLE_TIME 10;

sql&gt; ALTER PROFILE daemon LIMIT IDLE_TIME UNLIMITED;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
- LOGICAL_READS_PER_CALL, LOGICAL_READS_PER_SESSION: 
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE agent LIMIT LOGICAL_READS_PER_CALL 2500;

sql&gt; ALTER PROFILE data_analyst LIMIT LOGICAL_READS_PER_CALL 1000000;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
- SESSIONS_PER_USER: Limita el numero de sesiones simultaneas que puede establecer un usuario.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE admin_profile LIMIT SESSIONS_PER_USER 2;

sql&gt; ALTER PROFILE data_analyst LIMIT SESSIONS_PER_USER 6;

</p></pre></blockquote>

<h3>ASIGNAR PROFILE A UN USUARIO</h3>
<div class=\"parrafo\" align=\"justify\">
Una vez creado un profile con gestion de recursos del sistema se lo tenemos que asignar a un usuario para que se haga efectivo en sus sesion.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; ALTER USER MOGU PROFILE agent;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Por lo que cada vez que se conecte este usuario se le aplicar&aacute; este profile.
</div>
<h3>ADMINISTRACION DE LOS PASSWORD</h3>
<div class=\"parrafo\" align=\"justify\">
Cuando creamos un usuario podemos configurar su cuenta para que el password que suministra el usuario para autenticarse cumpla una serie de caracteristicas, tenga una determinada longitud, el n&uacute;mero de intentos fallidos antes de bloquear la cuenta, el periodo de caducidad del password, etc.
<br />
Al igual que la gestion de los recursos del sistema la gestion de passwords tambien se hace con la sentencia CREATE PROFILE o ALTER PROFILE. Y los parametros que vamos a poder configurar en estos profiles son:
<br />
-	FAILED_LOGIN_ATTEMPTS y PASSWORD_LOCK_TIME: 
Indica el numero de intentos que va a tener el usuario para identificarse antes de que la cuenta se bloque un determinado numero de dias.
<br />
Ej. La cuenta se bloquear&aacute; 10 min si el usuario falla 3 veces.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE userPass LIMIT 
   FAILED_LOGIN_ATTEMPTS 3
   PASSWORD_LOCK_TIME 10/1440;
      
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para modificar este profile haremos:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>sql&gt; ALTER PROFILE userPass LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para desbloquear una cuenta de usuario haremos:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\">
<pre><p>sql&gt; ALTER USER MiUser ACCOUNT UNLOCK;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
-	PASSWORD_LIFE_TIME y PASSWORD_GRACE_TIME: 
El primero es el tiempo de vida del password antes de empezar a recordar que debe de ser cambiado. El segundo el numero de dias que se va a recordar al usuaro que cambie el password. Si el tiempo de PASSWORD_GRACE_TIME se termina el usurio debe modificar su password.
<br />
Ej. Password con una tiempo de caducidad de 90 dias y durante los ultimos 14 se le va a recordar al usuario que lo cambie.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE userPass LIMIT
	PASSWORD_LIFE_TIME 90-14
	PASSWORD_GRACE_TIME 14;
	
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para deshabilitar este profile haremos:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; ALTER PROFILE userPass LIMIT
	PASSWORD_LIFE_TIME UNLIMIT
	PASSWORD_GRACE_TIME DEFAULT;
	
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
-	PASSWORD_REUSE_TIME y PASSWORD_REUSE_MAX: 
Marque el numero de dias que tienen que pasar para que un password pueda ser reutilizado, mientras que PASSWORD_REUSE_MAX marca el minimo numero de cambios de un password a otro.
<br />
Ej. Hacemos que exista un intervalo de 10 dias para que se pueda volver a reutilizar un password, y con el nuevo password debe de existir una diferencia maxima de 3 caracteres.
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE userPass LIMIT
	PASSWORD_REUSE_TIME 10
	PASSWORD_REUSE_MAX 3;
	
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para deshabilitar esto haremos:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; ALTER PROFILE userPass LIMIT
	   PASSWORD_REUSE_TIME UNLIMITED
	   PASSWORD_REUSE_MAX UNLIMITED;
	   
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
-	PASSWORD_VERIFY_FUNCTION: Hasta ahora hemos presentado parametros b&aacute;sicos para el manejo de los passwords de los usuarios, podemos hacer comprobaciones m&aacute;s complejas pasando el password suministrado por el usuario a una funcion. Esta funci&oacute;n debe de contener tres parametros el nombre del usuario, el antiguo password y el nuevo password.
<br />
Un ejemplo de funcion seria:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE OR REPLACE FUNCTION verify_function (username varchar2, password 
varchar2, old_password varchar2)
...
IF username = 'MASTER' THEN
   IF length(password) < 16 THEN
       raise_application_error(-20002, 'Password length less than 16 for 
APPLICATION user');
   END IF;
ELSE
   IF length(password) < 8 THEN
       raise_application_error(-20002, 'Password length less than 8 for regular 
user');
   END IF;
END IF;

</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Asignamos esta funci&oacute;n al parametro:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; CREATE PROFILE userPass LIMIT
	PASSWORD_VERIFY_FUNCTION verify_function;
	
</p></pre></blockquote>
<div class=\"parrafo\" align=\"justify\">
Para deshabilitar esta restriccion:
</div>
<blockquote style=\"COLOR: #2e5348; FONT-SIZE: 12px; FONT-WEIGHT: bold FONT:Arial, Helvetica, sans-serif\"><pre>
<p>sql&gt; ALTER PROFILE userPass LIMIT PASSWORD_VERIFY_FUNCTION DEFAULT;
</p></pre></blockquote>

";

/***********************************************/
/*PIE*/
/***********************************************/
echo"
	</div> 		 
    </div>
    <div class=\"pag_content_footer\">
    </div>
    <div class=\"pag_content_nav\">		
		<div class=\"pag_contenido_left\">
			<a  class=\"cap_next\" href=\"oca_main.php?cap=6&part=1\">	&lt; Anterior </a>
		 </div>
		<div class=\"pag_contenido_right\" align=\"right\">	
			<a  class=\"cap_next\" href=\"oca_main.php?cap=6&part=3\">	Siguiente &gt;</a>
		 </div>
	</div>      
</div>
";

?>